#pragma once
#include <string>
#include <cstddef> 
#include <odb/nullable.hxx>
#include <odb/core.hxx>

/*
    每个会话中都会有两个及以上的成员，只有两个成员的会话是单聊会话，超过两个
    是多人聊天会话，为了明确哪个用户属于哪个会话，或者说会话中有哪些成员，因
    此需要有会话成员的数据管理
    包含字段：

    ID：作为主键
    会话 ID：会话标识
    用户 ID：用户标识
*/

namespace zrb 
{
    #pragma db object table("session_member")
    class Session_member
    {
    public:
        Session_member()
        {}
        
        Session_member(const std::string& session_id,const std::string& user_id)
            :_session_id(session_id)
            ,_user_id(user_id)
        {}

        std::string session_id()
        {
            return _session_id;
        }
        void session_id(const std::string& session_id)
        {
            _session_id = session_id;
        }

        std::string user_id()
        {
            return _user_id;
        }
        void user_id(const std::string& user_id)
        {
            _user_id = user_id;
        }

    private:
        friend class odb::access;
        #pragma db id auto //主键自增
        unsigned long _id;
        #pragma db type("varchar(64)") index //建立索引
        std::string _session_id; //会话id
        #pragma db type("varchar(64)") index //建立索引
        std::string _user_id; //用户id
    };
}

// odb -d mysql --generate-query --generate-schema --profile boost/date-time chat_session_numbser.hxx